package pe.com.rimac.portal.service.facturacion.criterio;

public class CriterioBusqueda 
{
	public static final CriterioBusqueda POR_FECHAS = new CriterioBusqueda("1");
	public static final CriterioBusqueda POR_NUMERO_DOCUMENTO_SUNAT = new CriterioBusqueda("2");
	public static final CriterioBusqueda POR_PRODUCTO_Y_POLIZA = new CriterioBusqueda("3");
	public static final CriterioBusqueda POR_NUMERO_DOCUMENTO_COBRO = new CriterioBusqueda("4");
	
	private String value;
	
	private CriterioBusqueda(String value)
	{
		this.value = value;
	}
	
	public String getValue()
	{
		return value;
	}
	
	public static CriterioBusqueda fromValue(String value)
	{
		if(POR_FECHAS.getValue().equals(value))
		{
			return POR_FECHAS;
		}
		else if(POR_NUMERO_DOCUMENTO_SUNAT.getValue().equals(value))
		{
			return POR_NUMERO_DOCUMENTO_SUNAT;
		}
		else if(POR_PRODUCTO_Y_POLIZA.getValue().equals(value))
		{
			return POR_PRODUCTO_Y_POLIZA;
		}
		else if(POR_NUMERO_DOCUMENTO_COBRO.getValue().equals(value))
		{
			return POR_NUMERO_DOCUMENTO_COBRO;
		}
		throw new RuntimeException("No existe Criterio de busqueda para el valor '" + value + "'");
	}
	
    public boolean equals(Object obj)
    {
        if (obj instanceof CriterioBusqueda)
        {
            return this.value.equals(((CriterioBusqueda) obj).getValue());
        }
        else
        {
            throw new RuntimeException("El objeto '" + obj + "' no es un objeto del tipo CriterioBusqueda.");
        }
    }
}
